/*
 * balloonVision.h
 *
 *  Created on: Jun 7, 2011
 *      Author: alfonso
 */

#ifndef BALLOONVISION_H_
#define BALLOONVISION_H_

#include "detection.h"
#include "curl/curl.h"
#include "curl/types.h"
#include "curl/easy.h"

///* Giallo: */
//// -range chiari
//static CvScalar hsv_min_g = cvScalar(40,90,90);
//static	CvScalar hsv_max_g = cvScalar(70,256,256);
//// -range scuri
//static	CvScalar hsv_min2_g = cvScalar(35, 120, 120);
//static	CvScalar hsv_max2_g = cvScalar(40, 256, 256);

/* Giallo: */
// -range chiari
static CvScalar hsv_min_g = cvScalar(50,90,90);
static	CvScalar hsv_max_g = cvScalar(70,256,256);
// -range scuri
static	CvScalar hsv_min2_g = cvScalar(25, 100, 100);
static	CvScalar hsv_max2_g = cvScalar(43, 256, 256);

/* Arancio: */
// -range chiari
static CvScalar hsv_min_a = cvScalar(5, 160, 70);
static CvScalar hsv_max_a = cvScalar(20, 220, 200);
// -range scuri
static CvScalar hsv_min2_a = cvScalar(10, 80, 130);
static CvScalar hsv_max2_a = cvScalar(20, 180, 255);

/* Restituisce  il numero di target rillevati nel frame src e
 * un vettore balloons[] con i target rillevati. Il parametro origin
 * indica il punto di riferimento */
int getTargets(IplImage* src, Balloon targets[], CvPoint origin);

/* Restituisce  il numero di ostacoli rillevati nel frame src e
 * un vettore balloons[] con gli ostacoli rillevati. Il parametro origin
 * indica il punto di riferimento */
int getObstacles(IplImage* src, Balloon obstacles[], CvPoint origin);

/* Disegna sul frame dest gli n palloni del vettore balloons di colore colorEllipse*/
void drawEllispe(IplImage* dest, int n, Balloon balloons[], CvScalar colorEllipse);

/* Restituisce l'indice del pallone più vicino del vettore balloons,
 * altrimenti -1*/
int nearest(Balloon balloons[], int riemp);

/* Restituisce il frame acquisito dalla camera con una risoluzione CIF
 * Se il parametro initial è 1, la connessione è avvenuta per la prima volta
 * e la cam viene spostata in posizione home
 * */
IplImage* connectToCam(int initial);

/* Rileva se è presente una predominanza di giallo all'interno del ROI dell'immagine src.
 * Restituisce true se rientra nella percentuale di pixel gialli thPercent,
 * altrimenti false.
 */
bool isYellow(IplImage* src, CvPoint origin, int heightROI, int widthROI, int thPercent);

#endif /* BALLOONVISION_H_ */
